package com.online.questionnaire.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.online.questionnaire.model.Surveys;
import com.online.questionnaire.model.User;
import com.online.questionnaire.model.dto.SurveyStatisticsDTO;
import com.online.questionnaire.model.dto.SurveysDTO;
import com.online.questionnaire.model.vo.UserSurveyStatistics;
import org.springframework.transaction.annotation.Transactional;

import java.util.Map;

/**
* @author 27701
* @description 针对表【surveys(问卷表)】的数据库操作Service
* @createDate 2025-01-09 16:00:04
*/
public interface SurveysService extends IService<Surveys> {

    SurveysDTO getDTOById(Long id);

    /**
     * 新增/更新 保存问卷
     * @param surveys
     * @return
     */
    @Transactional
    SurveysDTO updateSurveys(SurveysDTO surveys, Long userId);

    /**
     * 新增问卷
     * @param surveys
     * @param userId
     * @return
     */
    @Transactional
    SurveysDTO addSurvey(SurveysDTO surveys, Long userId);

    /**
     * 新增模板
     * @param userId
     */
    @Transactional
    SurveysDTO addTemplate(SurveysDTO surveys, Long userId);

    /**
     * 新增模板
     * @param userId
     */
    @Transactional
    SurveysDTO updateTemplate(SurveysDTO surveys, Long userId);


    /**
     * 获取问卷统计
     * @param surveyId
     * @param userId
     * @return
     */
    SurveyStatisticsDTO getSurveyStatistics(Long surveyId, Long userId);

    UserSurveyStatistics getUserSurveyStatistics(Long userId);

    /**
     * 更新问卷状态
     */
    void updateSurveyStatus();

    /**
     * 普通问卷复制
     * @param id 问卷id
     * @param user
     * @return
     */
    boolean copy(Long id, User user);

    /**
     * 引用模板问卷
     * @param surveys 问卷
     * @param user
     * @return
     */
    boolean copyTemplate(Surveys surveys, User user);

    /**
     * 导出问卷 整体比例模式
     * @param id 问卷id
     * @return 文件路径 path name 文件名
     */
    Map<String,String> exportExcel(Long id,Long userId);

    /**
     * 导出问卷 单张蛋卷模式
     * @param id
     * @param userId
     * @return name 文件名 文件路径 path
     */
    Map<String,String> exportExcelByOneAnswer(Long id, Long userId);
}
